package ws.performancetest.tests.synchronization.enumaration;

/**
 * Enumeration of all test types.
 *
 * @author Wilson Santos, 36228 <wilson.santos@ua.pt>
 */
public enum TestType {

  /**
   * Read and write locks <b>are not</b> differentiated.
   *
   * <p>Threads are either {@code TWriter}s or {@code TReader}s.</p>
   *
   * <p>Synchronization methods of this type:</p>
   *  <ol>
   *    <li>Monitor ({@code synchronized})
   *    <li>Semaphore
   *    <li>ReentrantLock
   *  </ol>
   * </p>
   */
  UNDIFFERENTIATED_RW,
  /**
   * Read and write locks <b>are not</b> differentiated.
   *
   * <p>Threads are either {@code TConsumer}s or {@code TProducer}s.</p>
   *
   * <p>Synchronization methods of this type:</p>
   *  <ol>
   *    <li>Monitor ({@code synchronized})
   *    <li>Semaphore
   *    <li>ReentrantLock
   *  </ol>
   * </p>
   */
  UNDIFFERENTIATED_PC,
  /**
   * Read and write locks <b>are</b> differentiated.
   *
   * <p>Threads are either {@code TWriters} or {@code TReaders}.</p>
   *
   * <p>Synchronization methods of this type:</p>
   *  <ol>
   *    <li>ReentrantReadWriteLock
   *  </ol>
   * </p>
   */
  READ_WRITE_LOCK
}
